This invention pertains to a method and apparatus for encoding binary data before it is submitted to a serial communication link transmitter and the restoration (decoding) of the encoded binary data to its original form after it has been received by a serial communication link receiver.
The purpose of encoding data is to ensure that for any arbitrary data to be transmitted over a link the line code is balanced, i.e. that the encoded data propagating over the link consists on average of an equal number of logical one bits and logical zero bits. This permits the link transmitter and link receiver to be implemented as ac coupled circuits. Such balanced line codes are desirable, for example, when the signal path in the serial communication link must include transformers for prevention of ground loops and common mode signal propagation. Also, in high speed fiber optic transmitters, a laser driven by a balanced line code requires an average drive current which is data independent and therefore easy to regulate. In high speed fiber optic receivers a balanced line code allows easy separation of the information carrying ac component of the photodetector current from the much larger dc bias currents of the receiver amplifier.
Previously used methods of encoding data into a balanced line code include, for example, 8B/10B encoding, described by Widmar and Franaszek, "A DC-Balanced, Balanced, Partitioned Block, 8B/10B Transmission Code", IBM Journal of Research and Development, Vol. 27, No. 5, September 1983, pp. 440-451. In 8B/10B encoding, subsequent groupings of 8 consecutive bits of the original data are each represented by a 10 bit word properly selected to ensure a balanced line code. The 10 bit words are then transmitted over the communication link. 8B/10B encoding and decoding are complex and the bandwidth penalty is 25% because the communication link must transmit 10 bits of the balanced code within the time span of 8 bits of the original data.